package org.standard.sys.service;

import java.util.List;

import org.standard.base.model.BaseUser;
import org.standard.commons.exception.InfrastructureException;
import org.standard.sys.model.SysFunc;
import org.standard.sys.model.SysMenu;

public interface SysMenuService {
	
	/**
	 * 菜单列表
	 * 只有主菜单节点的列表
	 * @return
	 */
	public List<SysMenu> sysMenuList();

	/**
	 * 添加新的菜单节点
	 * 成功返回1,失败返回0
	 * @param sysMenu
	 * @return
	 */
	public char createSysMenu(SysMenu sysMenu)throws Exception;
	
	/**
	 * 修改菜单节点
	 * @param sysMenu
	 * @return
	 */
	public char modifySysMenu(SysMenu sysMenu)throws Exception;
	
	/**
	 * 删除菜单节点
	 * 如果改节点下还有子节点不能被删除
	 * @param sysMenu
	 * @return
	 */
	public char deleteSysMenu(SysMenu sysMenu)throws Exception;
	
	/***
	 * 菜单的下级菜单管理
	 * 不显示一级菜单节点
	 * @param menuId
	 * @return
	 */
	public List<SysFunc> juniorSysMenuList(String menuId);
	
	/***
	 * 菜单的的树形显示
	 * 包括一级菜单
	 * 用于权限控制管理
	 * @param menuId
	 * @return
	 */
	public List<SysMenu> juniorSysMenuList();
	
	/**
	 * 根据id查找一条菜单节点记录
	 * @return
	 */
	public SysMenu findSysMenuById(String menuId);
	
	/**
	 * 首页左边的树
	 * @return
	 */
	public List<SysMenu> indexLeft(BaseUser user);
	
	/**
	 * 根据菜单代码查找记录
	 * @param menuCode
	 * @return
	 */
	public List<SysMenu> findByCode(String menuCode);
	
	public char modifyJuniorFunc(SysMenu sysMenu,String menuCode);
	
	public SysMenu findByMebuCode(String code);
	
}
